package ch10_thread.thread;

/**
 * 线程的停止的方法
 * 原理介绍：使用interrupt来通知，而不是强制！！！
 *
 * @author guod
 * @since 1.8
 */
public class StopVolatile {
    public static void main(String[] args) {
        T6 t6 = new T6();
        Thread t = new Thread(t6);
        t.start();
        for (int i = 0; i < 100000; i++) {
            if (i % 10000 == 0 & i > 0) {
                System.out.println("in thread main i=" + i);
            }
        }
        System.out.println("Thread main is over");
        // t.interrupt();
        // t.stop();  已经废弃，会造成线程运行一半停止，没办法完成一个基本操作，产生脏数据。
        // t.suspend(); 已经废弃
        // t.resume(); 已经废弃
        t6.shutDown();
    }

    static class T6 implements Runnable {
        private volatile boolean flag = true;

        @Override
        public void run() {
            int i = 0;
            while (flag) {
                System.out.print(" " + i++);
            }
        }

        public void shutDown() {
            flag = false;
        }
    }
}
